Node.js 版本間的差異使得有些專案需要使用特定的版本才能正常運作,因此各專案間需要來回的切換 Node.js 的版本。要切換 Node.js 版本意味著要重複做安裝的動作,這樣會使得切換版本浪費太多的時間。
使用 nvm (全名: Node Version Manager)管理 Node.js 版本,讓我們可以在系統中安裝多個 Node.js 版本,藉由 CLI 任意地切換與安裝各種版本的 Node.js ,以便匹配各式專案。
nvm 作為 Node.js 的版本管理工具,可以通過 CLI 指令快速的下載、安裝與切換各個不同的版本,大幅減少轉換版本所耗費的時間。
使用 cURL 或 Wget 安裝 nvm :
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
腳本的版本請使用最新的(目前是 v0.38.0 ) 可以到 nvm 的 GitHub 中取得最新版本號。
安裝腳本會將 nvm 的程式建立在 ~/.nvm
中,並會變更 profile 檔案內容讓 nvm 載入。
nvm 只支援 unix 、 macOS 與 windows WSL ,要在 Windows 上執行則要使用
nvm-windows
。
安裝完成後,使用 nvm
指令即可執行。
接著會介紹幾個常用的 nvm 指令與在專案中指定 Node.js 版本的方式。
在安裝 Node.js 前,先使用 nvm ls-remote
找尋所有 Node.js 的版本:
nvm ls-remote
如果只想要找 LTS (全名: Long Term Support )版本:
nvm ls-remote --lts
選定版本後進行安裝:
nvm install v10.24.1
一般來說,我們不會需要指定到特定的版本,而且版本號也不利於記憶,因此 nvm 提供了 alias 功能:
nvm install node
Alias node
會指到最新的 Node.js 版本,因此上面的指令表示要安裝最新的版本。
我們可以藉由 alias
指令設定自己的別名:
nvm alias project1 14.17.4
也可以使用 unalias
刪除別名:
nvm unalias project1
每次開啟 Shell 時, nvm 會抓取 alias 為 default
的版本,因此要改變預設的版本,可以修改 default
alias :
nvm alias default 14.17.4
要切換 Node.js 版本時,可以使用:
nvm use 14.17.4
要瀏覽當前的狀態,可以使用:
執行 nvm ls
:
> nvm ls
v4.9.1
-> v14.17.4
system
default -> stable (-> v14.17.4)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v14.17.4) (default)
stable -> 14.17 (-> v14.17.4) (default)
lts/* -> lts/fermium (-> v14.17.4)
lts/argon -> v4.9.1
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.4 (-> N/A)
lts/fermium -> v14.17.4
nvm ls
會顯示已安裝的版本、目前使用版本及各 alias 的資訊。
如果只要知道當前使用的 Node.js 版本:
nvm version
.nvmrc
檔案預設 Node.js 版本nvm 提供使用者 .nvmrc
檔案來配置專案預設的 Node.js 版本:
lts/*
.nvmrc
的內容為要使用的版本號或是 alias 。
當專案下有這個檔案時,可以不用指定版本直接使用 nvm use
或是 nvm install
, nvm 會依照 .nvmrc
的版本處理。
nvm ls-remote
會搜尋線上所有的 Node.js 版本,如果只想找 LTS 版本的話,可以用 --lts
做過濾。nvm install <version>
安裝特定版本的 Node.js 。nvm alias <alias> <version>
可以將特定版本設定別名,別名 default
為 nvm 預設會開啟的版本,因此可以將期望的預設版本設為 default
別名。nvm unalias <alias>
刪除別名。nvm use <alias/version>
使用特定別名/版本。nvm ls
可以顯示目前 Node.js 版本的安裝與使用狀態。nvm version
當前使用的 Node.js 版本。.nvmrc
的檔案,在檔案內設定特定的版本,在專案的目錄下執行 nvm use
或 nvm install
就會安裝 .nvmrc
內所設定的版本。